//
//
//
//class Solution {
//    public List<List<Integer>> permute(int[] nums) {
//        permute(nums, 0, new boolean[nums.length]);
//        return ret;
//    }
//
//    List<List<Integer>> ret = new ArrayList<>();
//    List<Integer> tmp = new ArrayList<>();
//
//    public void permute(int[] nums, int index, boolean[] flg) {
//        if (index >= nums.length) {
//            ret.add(new ArrayList<>(tmp));
//            return;
//        }
//        for (int i = 0; i < nums.length; i++) {
//            if (!flg[i]) {
//                tmp.add(nums[i]);
//                flg[i] = true;
//                permute(nums, index + 1, flg);
//                flg[i] = false;
//                tmp.remove(tmp.size() - 1);
//            }
//
//        }
//
//    }
//}